using System;
using System.IO; 

namespace Zadanie62 // Zadanie 6.2
{
    class Matrix
    {
        FileStream fout, fin;

        public void czytaj_dane(int [,] tablica, int rozmiar)
        {
            int i, j;

            Console.WriteLine("Tworzymy tablic 10x10.");
            Console.WriteLine();

            for (i = 0; i < rozmiar; i++)
            {
                for (j = 0; j < rozmiar; j++)
                {
                    if (i == j)
                        tablica[i, j] = 1;
                    else 
                        tablica[i, j] = 0;
                    Console.Write(tablica[i, j] + " "); 
                }
                Console.WriteLine();
            }
        }

        public void zapisz_dane_do_pliku(int [,] tablica, int rozmiar)
        {
            int i, j;

            Console.WriteLine();
            Console.WriteLine("Zapisujemy tablic 10x10 do pliku tekstowego.");
            Console.WriteLine();

            fout = new FileStream("dane.txt", FileMode.Create);             
            StreamWriter fstr_out = new StreamWriter(fout); 

            for (i = 0; i < rozmiar; i++)
            {
                for (j = 0; j < rozmiar; j++)
                {
                    fstr_out.Write((char) tablica[i, j]); // rzutujemy i zapisujemy tablic do pliku 
                    Console.Write(tablica[i, j] + " "); 
                }
                Console.WriteLine();
            }
                       
            fstr_out.Close();
            fout.Close();
        }

        public void czytaj_dane_z_pliku(int [,] tablica1, int rozmiar)  
        {
            int i, j;

            Console.WriteLine();
            Console.WriteLine("Odczytujemy tablic1 10x10 z pliku tekstowego.");
            Console.WriteLine();

            fin = new FileStream("dane.txt", FileMode.Open);            
            StreamReader fstr_in = new StreamReader(fin);       

            for (i = 0; i < rozmiar; i++)
            {
                for (j = 0; j < rozmiar; j++)
                {
                    tablica1[i, j] = (int) fstr_in.Read(); // rzutujemy i zapisujemy zawarto pliku do tablicy1
                    Console.Write(tablica1[i, j] + " ");
                }
                Console.WriteLine();
            }
                         
            fstr_in.Close();
            fin.Close();
        }

        static void Main(string[] args)
        {
            const int rozmiar = 10; 
            int[,] tablica = new int[rozmiar, rozmiar];
            int[,] tablica1 = new int[rozmiar, rozmiar];

            Matrix matrix1 = new Matrix();      

            matrix1.czytaj_dane(tablica, rozmiar);         
            matrix1.zapisz_dane_do_pliku(tablica, rozmiar);        
            matrix1.czytaj_dane_z_pliku(tablica1, rozmiar);

            Console.Read(); // naciskamy klawisz Enter
        }
    }
}